// samsting : this file is auto create.

#ifndef ALIYUN_Emr_DescribeExecutePlanResponse_H_
#define ALIYUN_Emr_DescribeExecutePlanResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Emr {

class DescribeExecutePlanResponse : public AcsResponse {
public:
  DescribeExecutePlanResponse();

  class JobInfo {
    friend class DescribeExecutePlanResponse;
  public:
    int64 GetId(void) const;
  private:
    int64  Id_;
  }; // JobInfo 


  class ClusterInfo {
    friend class DescribeExecutePlanResponse;
  public:
    int64 GetClusterId(void) const;
    const string& GetBizId(void) const;
    const string& GetClusterName(void) const;
    const string& GetUtcStartTime(void) const;
    const string& GetUtcStopTime(void) const;
    int  GetTimeOutEnable(void) const;
    const string& GetTimeOutTime(void) const;
    int  GetTimeOutWarningWay(void) const;
    int  GetTimeOutOperate(void) const;
    int  GetReleaseSetting(void) const;
    bool GetIsOpenOssLog(void) const;
    int  GetStatus(void) const;
    int  GetLastJobStatus(void) const;
    int  GetRunningTime(void) const;
    const string& GetFailReason(void) const;
    const string& GetOssPath(void) const;
    const string& GetEmrRole4ECS(void) const;
    const string& GetEmrRole4Oss(void) const;
    bool GetIsOpenPublicIp(void) const;
  private:
    int64  ClusterId_;
    string BizId_;
    string ClusterName_;
    string UtcStartTime_;
    string UtcStopTime_;
    int    TimeOutEnable_;
    string TimeOutTime_;
    int    TimeOutWarningWay_;
    int    TimeOutOperate_;
    int    ReleaseSetting_;
    bool   IsOpenOssLog_;
    int    Status_;
    int    LastJobStatus_;
    int    RunningTime_;
    string FailReason_;
    string OssPath_;
    string EmrRole4ECS_;
    string EmrRole4Oss_;
    bool   IsOpenPublicIp_;
  }; // ClusterInfo 


  class SoftwareInfo {
    friend class DescribeExecutePlanResponse;
  public:
    const string& GetEmrVer(void) const;
    const string& GetClusterType(void) const;
    const string& GetSoftwares(void) const;
  private:
    string EmrVer_;
    string ClusterType_;
    string Softwares_;
  }; // SoftwareInfo 


  class EcsInfo {
    friend class DescribeExecutePlanResponse;
  public:

    class EcsRole {
      friend class DescribeExecutePlanResponse;
      friend class EcsInfo;
    public:

      class Node {
        friend class DescribeExecutePlanResponse;
        friend class EcsInfo;
        friend class EcsRole;
      public:
        const string& GetInstanceId(void) const;
        const string& GetPubIp(void) const;
        const string& GetInnerIp(void) const;
        const string& GetDiskInfo(void) const;
      private:
        string InstanceId_;
        string PubIp_;
        string InnerIp_;
        string DiskInfo_;
      }; // Node 

      const std::vector<Node>& GetNodes(void) const;
      bool GetIsMaster(void) const;
      const string& GetInstanceType(void) const;
      const string& GetPayment(void) const;
      const string& GetCpuCore(void) const;
      const string& GetMemoryCapacity(void) const;
      int  GetDiskType(void) const;
      int  GetDiskCapacity(void) const;
      const string& GetBandWidth(void) const;
      const string& GetNetPayType(void) const;
      const string& GetEcsPayType(void) const;
    private:
      std::vector<Node> Nodes_;
      bool   IsMaster_;
      string InstanceType_;
      string Payment_;
      string CpuCore_;
      string MemoryCapacity_;
      int    DiskType_;
      int    DiskCapacity_;
      string BandWidth_;
      string NetPayType_;
      string EcsPayType_;
    }; // EcsRole 

    const std::vector<EcsRole>& GetEcsRoles(void) const;
    const string& GetRegionId(void) const;
    const string& GetZoneId(void) const;
    const string& GetImageId(void) const;
    const string& GetImageName(void) const;
    const string& GetSparkVersion(void) const;
    const string& GetSecurityGroupId(void) const;
    int  GetTotalCount(void) const;
    int  GetMasterCount(void) const;
    int  GetSlaveCount(void) const;
  private:
    std::vector<EcsRole> EcsRoles_;
    string RegionId_;
    string ZoneId_;
    string ImageId_;
    string ImageName_;
    string SparkVersion_;
    string SecurityGroupId_;
    int    TotalCount_;
    int    MasterCount_;
    int    SlaveCount_;
  }; // EcsInfo 

  const std::vector<JobInfo>& GetJobInfos(void) const;
  const ClusterInfo& GetClusterInfo(void) const;
  const SoftwareInfo& GetSoftwareInfo(void) const;
  const EcsInfo& GetEcsInfo(void) const;
  int64 GetId(void) const;
  const string& GetName(void) const;
  int  GetStrategy(void) const;
  int  GetTimeInterval(void) const;
  const string& GetStartTime(void) const;
  const string& GetTimeUnit(void) const;
  bool GetIsCreateCluster(void) const;

private:
  std::vector<JobInfo> JobInfos_;
  ClusterInfo ClusterInfo_;
  SoftwareInfo SoftwareInfo_;
  EcsInfo EcsInfo_;
  int64  Id_;
  string Name_;
  int    Strategy_;
  int    TimeInterval_;
  string StartTime_;
  string TimeUnit_;
  bool   IsCreateCluster_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Emr {

#endif // #ifndef ALIYUN_Emr_DescribeExecutePlanResponse_H_

// end of file 
